// // CGI 机制开始执行
// #include "cgi.hpp"
// #include "cgi_mysql.hpp"
// #include <memory>
// #include <cstdlib>

// int main()
// {
//     // 1. 接收http服务器交给我们的信息
//     std::shared_ptr<CGI> cgi(new CGI()); 
//     std::cerr << "cgi 接受到的信息： " << cgi->postMethodMessage() << std::endl;
//     cgi->getMethodStringHeader();
//     std::cout << cgi->value1 << std::endl;
//     std::cout << cgi->value2 << std::endl;
//     // 2.发送指令给MYSQL数据库  eg: insert into regis_table value(id, username, passwd);
//     std::shared_ptr<Mysql> mysl(new Mysql()); 
//     // ---------------------------
//     // select passwd from regis_table where username="张三" and passwd="123456";
//     std::string select_command = "select passwd from regis_table where username='";
//     select_command += cgi->value1;
//     select_command += "' and passwd='";
//     select_command += cgi->value2;
//     select_command += "';";
//     std::cerr << "要执行的代码是： " << select_command << std::endl;
//     if(!mysl->isUserExist(select_command, cgi->value2))
//     {
//         // 不存在就 创建账号
//         std::cerr << "账号不存在，创建账号" << std::endl;
//         std::string mysql_commmand = "insert into ";
//         mysql_commmand += my_table;
//         mysql_commmand += " value(3, '";
//         mysql_commmand += cgi->value1;
//         mysql_commmand += "', '";
//         mysql_commmand += cgi->value2;
//         mysql_commmand += "');";
//         std::cerr << "再次执行的代码是： " << mysql_commmand << std::endl;
//         mysl->sendMysqlData(mysql_commmand);
//     }
//     // 存在就执行后续代码
//     std::cerr << "账号存在，执行后续代码"<<std::endl;

//     return 0;
// }


#include "cgi_mysql.hpp" // 假设您有数据库操作头文件
#include <string>
#include <map>
#include "cgi.hpp"
#include <memory>
#include <vector>
#include <cstdlib>
#include <mysql/mysql.h>
#include <sys/types.h>
#include <sys/wait.h>

int main() {
    // 1. 获取表单数据
    // 1. 接收http服务器交给我们的信息
    // std::string message = "alin的系统";
    // std::cout << message << std::endl;
    
    std::shared_ptr<CGI> cgi(new CGI()); 
    std::cerr << "cgi 接受到的信息： " << cgi->postMethodMessage() << std::endl;
    cgi->jsonParse();
    cgi->getMethodStringHeader();
    std::string command_str = cgi->getRecvMessage();
    Com_Exe com_exe(command_str);
    int n = com_exe.BuildinCmd(); // 执行内建命令
    if(!n)
        com_exe.Execute(); // 执行命令


    // auto it = command.begin();
    // while(it != command.end()) {
    //     if(*it == command_str) {
    //         // std::cout << "执行命令: " << *it << std::endl;
    //         // 执行命令的逻辑
    //         // 这里可以调用相应的函数来执行命令
    //         pid_t pid = fork();
    //         if (pid == 0) {
    //             // 子进程执行命令
    //             execlp(it->c_str(), it->c_str(), nullptr);
    //             exit(0);
    //         }
    //         else if(pid > 0)
    //         {
    //             // 父进程等待子进程结束
    //             int status;
    //             waitpid(pid, &status, 0);
    //             if (WIFEXITED(status)) {
    //                 std::cerr << "子进程退出码: " << WEXITSTATUS(status) << std::endl;
    //             }
    //         }
    //         else {
    //             std::cerr << "Fork failed!" << std::endl;
    //         }
    //         break;
    //     }
    //     it++;
    // }


    return 0;
}

